home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d21
/
qostnote.arc
/
EXCEPT13.TEC
< prev
next >
Wrap
Text File
|
1990-07-05
|
4KB
|
73 lines
ID:13 Discussion of Exception #13
Quarterdeck Technical Note
by Bob Perry
What is "Exception 13?"
What can be done to prevent "Exception 13's?"
Exceptions are unusual or invalid conditions associated with
the execution of a particular instruction by the 80386 processor. The
80386 recognizes several different classes of exceptions, and assigns
a different vector number to each class. The DESQview-386 memory
manager, QEMM-386, has been designed to capture these 80386 exception
vectors and display them directly to the user.
Exception 13 is the "General Protection Fault" error. Any
privileged instruction or any instruction that references memory can
trigger an Exception 13.
In the first case, privileged instructions, the Exception 13
could indicate that a program has violated the protected mode of the
80386 by executing a privileged instruction or I/O reference. Thus,
when the prompt, "Terminate, Reboot or Continue?" is issued, the
"Continue" option directs the 80386 to reorder the ranking of
priviliged instructions and the program should continue to execute.
It is the second case, instructions that reference memory,
that are far more common to DESQview 386 (and QEMM-386) users. Here
the exception can indicate that an application has a bug. It has over-
written its memory partition, and may in fact be running wild, writing
code all over the place. This situation can occur with some programs
that were written for use on the 8088 processor and may not be useable
in the 80386's virtual 8086 mode. A few other programs may not be
compatible with QEMM-386. All this adds up to mean that when
"Terminate, Reboot or Continue" is displayed, the user can only
"Terminate."
For those users who are more technically oriented, this over-
writing of the memory partition generally means that a word or a
double word value of code has been written to the last byte of a
segment. The problem or "bug" in the application program has to do
with wrapping the value to the next segment of memory.
What can the user do to prevent Exception 13's? The DESQview
386 user can try two things: First, run Change Program and try to
allocate more memory to the application. Second, the user can try to
increase the Protection Level to 3, which will not alleviate the
source of the Exception 13, but may allow the application to pass more
descriptive error messages through to the user.
When Exception 13's are obtained outside of DESQview they are
either caused by applications written for the 80386 protected mode or
they are not. If the faulting application is written for protected
mode of the 80386, it is likely that this program has no VCPI (Virtual
Control Program Interface). Since QEMM-386 is a virtual 8086 program,
such faulting applications cannot be run under QEMM without VCPI. The
user has no choice but to reboot without QEMM, and contact the
developer of the faulting application for VCPI support.
If the faulting application was not written for the protected
mode of the '386, the QEMM user is probably using the RAM parameter
(which is necessary to LOADHI drivers and TSR's). In this case the
faulting program may be rinning in an area of high RAM in which it
never thought it would be run. To correct this problem, the user may
opt to RAM only specific areas of memory, as described on page 6 of
the QEMM manual, rather than issue a RAM for all mappable areas.
Another possible solution to such memory conflicts might be to use the
EXCLUDE parameter (on page 5 of the QEMM manual) for all known ROM's
being mapped into RAM.
Copyright (C) 1990 by Quarterdeck Office Systems
* * * E N D O F F I L E * * *